import axios from "axios";
import {ElMessage} from "element-plus";
import router from "@/router";
//vue request.js

const request = axios.create({
    baseURL: "/api",
    timeout: 10000,
})

// 添加请求拦截器
request.interceptors.request.use(function (config) {
        // 在发送请求之前，封装token令牌(localStore中有用户的身份信息时，才封装请求头令牌)
        let userInfo = localStorage.getItem('loginUser')
        if (userInfo) {
            // 将userInfo转成JSON对象，并获取token
            // JSON.parse()将字符串转成JSON对象
            config.headers.token = JSON.parse(userInfo).token
        }
        return config;
    }, error =>
        // 对请求错误做些什么
        Promise.reject(error)
);


//axios的响应 response 拦截器->axios->data:{data:{}}->response.data:{data:{}}
request.interceptors.response.use(
    response =>  //成功回调
        response.data,
    error => { //失败回调
        // 响应401   用户需要重新登录
        if (error.response.status === 401) {
            ElMessage.error('身份信息失效，请重新登录！')
            router.push('/login')
        }
        return Promise.reject(error)
    }
)

export default request